function [KA,Weights,name] = selfcalibPloynomial(TF,w,h,numparams,corrs)
%this function , given a camera center and a focal length and a series of fundamental
%matrices computes the error with respect to a fundamental matrix


[m,numFs]=size(TF);
syms foc1 foc2 xc yc real;
symbs=cell(numFs,1);
for i=1:numFs

foc1=TF{1,i}(1,1);
foc2=TF{1,i}(1,2);
foc3=TF{1,i}(1,3);

foc4=TF{1,i}(2,1);
foc5=TF{1,i}(2,2);
foc6=TF{1,i}(2,3);

foc7=TF{1,i}(3,1);
foc8=TF{1,i}(3,2);
foc9=TF{1,i}(3,3);


 
end

end





%delta=(((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(f6*foc2 + f5*foc2*hc + f4*foc2*wc) + f1*f4*foc1^3*foc2 + f2*f5*foc1*foc2^3)^2 - ((wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1)^2 + foc1^2*(f7 + f4*hc + f1*wc)^2 + foc2^2*(f8 + f5*hc + f2*wc)^2)*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)^2 + (f6*foc2 + f5*foc2*hc + f4*foc2*wc)^2 + f1^2*foc1^4 + f5^2*foc2^4 + f2^2*foc1^2*foc2^2 + f4^2*foc1^2*foc2^2) + ((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f1*foc1^3*(f7 + f4*hc + f1*wc) + f2*foc1*foc2^2*(f8 + f5*hc + f2*wc))^2 + ((f6*foc2 + f5*foc2*hc + f4*foc2*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f5*foc2^3*(f8 + f5*hc + f2*wc) + f4*foc1^2*foc2*(f7 + f4*hc + f1*wc))^2 - ((f3*foc1 + f2*foc1*hc + f1*foc1*wc)^2 + f1^2*foc1^4 + f2^2*foc1^2*foc2^2)*((f6*foc2 + f5*foc2*hc + f4*foc2*wc)^2 + f5^2*foc2^4 + f4^2*foc1^2*foc2^2))^2*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)^2 + (f6*foc2 + f5*foc2*hc + f4*foc2*wc)^2 + (wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1)^2 + foc1^2*(f7 + f4*hc + f1*wc)^2 + foc2^2*(f8 + f5*hc + f2*wc)^2 + f1^2*foc1^4 + f5^2*foc2^4 + f2^2*foc1^2*foc2^2 + f4^2*foc1^2*foc2^2)^2 - 4*((((f6*foc2 + f5*foc2*hc + f4*foc2*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f5*foc2^3*(f8 + f5*hc + f2*wc) + f4*foc1^2*foc2*(f7 + f4*hc + f1*wc))*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(f6*foc2 + f5*foc2*hc + f4*foc2*wc) + f1*f4*foc1^3*foc2 + f2*f5*foc1*foc2^3) + ((f3*foc1 + f2*foc1*hc + f1*foc1*wc)^2 + f1^2*foc1^4 + f2^2*foc1^2*foc2^2)*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f1*foc1^3*(f7 + f4*hc + f1*wc) + f2*foc1*foc2^2*(f8 + f5*hc + f2*wc)))*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f1*foc1^3*(f7 + f4*hc + f1*wc) + f2*foc1*foc2^2*(f8 + f5*hc + f2*wc)) + (((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f1*foc1^3*(f7 + f4*hc + f1*wc) + f2*foc1*foc2^2*(f8 + f5*hc + f2*wc))*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(f6*foc2 + f5*foc2*hc + f4*foc2*wc) + f1*f4*foc1^3*foc2 + f2*f5*foc1*foc2^3) + ((f6*foc2 + f5*foc2*hc + f4*foc2*wc)^2 + f5^2*foc2^4 + f4^2*foc1^2*foc2^2)*((f6*foc2 + f5*foc2*hc + f4*foc2*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f5*foc2^3*(f8 + f5*hc + f2*wc) + f4*foc1^2*foc2*(f7 + f4*hc + f1*wc)))*((f6*foc2 + f5*foc2*hc + f4*foc2*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f5*foc2^3*(f8 + f5*hc + f2*wc) + f4*foc1^2*foc2*(f7 + f4*hc + f1*wc)) - (((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(f6*foc2 + f5*foc2*hc + f4*foc2*wc) + f1*f4*foc1^3*foc2 + f2*f5*foc1*foc2^3)^2 - ((f3*foc1 + f2*foc1*hc + f1*foc1*wc)^2 + f1^2*foc1^4 + f2^2*foc1^2*foc2^2)*((f6*foc2 + f5*foc2*hc + f4*foc2*wc)^2 + f5^2*foc2^4 + f4^2*foc1^2*foc2^2))*((wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1)^2 + foc1^2*(f7 + f4*hc + f1*wc)^2 + foc2^2*(f8 + f5*hc + f2*wc)^2) - (((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f1*foc1^3*(f7 + f4*hc + f1*wc) + f2*foc1*foc2^2*(f8 + f5*hc + f2*wc))^2 + ((f6*foc2 + f5*foc2*hc + f4*foc2*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f5*foc2^3*(f8 + f5*hc + f2*wc) + f4*foc1^2*foc2*(f7 + f4*hc + f1*wc))^2)*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)^2 + (f6*foc2 + f5*foc2*hc + f4*foc2*wc)^2 + f1^2*foc1^4 + f5^2*foc2^4 + f2^2*foc1^2*foc2^2 + f4^2*foc1^2*foc2^2))*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)^2 + (f6*foc2 + f5*foc2*hc + f4*foc2*wc)^2 + (wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1)^2 + foc1^2*(f7 + f4*hc + f1*wc)^2 + foc2^2*(f8 + f5*hc + f2*wc)^2 + f1^2*foc1^4 + f5^2*foc2^4 + f2^2*foc1^2*foc2^2 + f4^2*foc1^2*foc2^2)^3 - 27*((((f6*foc2 + f5*foc2*hc + f4*foc2*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f5*foc2^3*(f8 + f5*hc + f2*wc) + f4*foc1^2*foc2*(f7 + f4*hc + f1*wc))*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(f6*foc2 + f5*foc2*hc + f4*foc2*wc) + f1*f4*foc1^3*foc2 + f2*f5*foc1*foc2^3) + ((f3*foc1 + f2*foc1*hc + f1*foc1*wc)^2 + f1^2*foc1^4 + f2^2*foc1^2*foc2^2)*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f1*foc1^3*(f7 + f4*hc + f1*wc) + f2*foc1*foc2^2*(f8 + f5*hc + f2*wc)))*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f1*foc1^3*(f7 + f4*hc + f1*wc) + f2*foc1*foc2^2*(f8 + f5*hc + f2*wc)) + (((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f1*foc1^3*(f7 + f4*hc + f1*wc) + f2*foc1*foc2^2*(f8 + f5*hc + f2*wc))*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(f6*foc2 + f5*foc2*hc + f4*foc2*wc) + f1*f4*foc1^3*foc2 + f2*f5*foc1*foc2^3) + ((f6*foc2 + f5*foc2*hc + f4*foc2*wc)^2 + f5^2*foc2^4 + f4^2*foc1^2*foc2^2)*((f6*foc2 + f5*foc2*hc + f4*foc2*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f5*foc2^3*(f8 + f5*hc + f2*wc) + f4*foc1^2*foc2*(f7 + f4*hc + f1*wc)))*((f6*foc2 + f5*foc2*hc + f4*foc2*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f5*foc2^3*(f8 + f5*hc + f2*wc) + f4*foc1^2*foc2*(f7 + f4*hc + f1*wc)) - (((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(f6*foc2 + f5*foc2*hc + f4*foc2*wc) + f1*f4*foc1^3*foc2 + f2*f5*foc1*foc2^3)^2 - ((f3*foc1 + f2*foc1*hc + f1*foc1*wc)^2 + f1^2*foc1^4 + f2^2*foc1^2*foc2^2)*((f6*foc2 + f5*foc2*hc + f4*foc2*wc)^2 + f5^2*foc2^4 + f4^2*foc1^2*foc2^2))*((wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1)^2 + foc1^2*(f7 + f4*hc + f1*wc)^2 + foc2^2*(f8 + f5*hc + f2*wc)^2) - (((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f1*foc1^3*(f7 + f4*hc + f1*wc) + f2*foc1*foc2^2*(f8 + f5*hc + f2*wc))^2 + ((f6*foc2 + f5*foc2*hc + f4*foc2*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f5*foc2^3*(f8 + f5*hc + f2*wc) + f4*foc1^2*foc2*(f7 + f4*hc + f1*wc))^2)*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)^2 + (f6*foc2 + f5*foc2*hc + f4*foc2*wc)^2 + f1^2*foc1^4 + f5^2*foc2^4 + f2^2*foc1^2*foc2^2 + f4^2*foc1^2*foc2^2))^2 + 4*(((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(f6*foc2 + f5*foc2*hc + f4*foc2*wc) + f1*f4*foc1^3*foc2 + f2*f5*foc1*foc2^3)^2 - ((wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1)^2 + foc1^2*(f7 + f4*hc + f1*wc)^2 + foc2^2*(f8 + f5*hc + f2*wc)^2)*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)^2 + (f6*foc2 + f5*foc2*hc + f4*foc2*wc)^2 + f1^2*foc1^4 + f5^2*foc2^4 + f2^2*foc1^2*foc2^2 + f4^2*foc1^2*foc2^2) + ((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f1*foc1^3*(f7 + f4*hc + f1*wc) + f2*foc1*foc2^2*(f8 + f5*hc + f2*wc))^2 + ((f6*foc2 + f5*foc2*hc + f4*foc2*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f5*foc2^3*(f8 + f5*hc + f2*wc) + f4*foc1^2*foc2*(f7 + f4*hc + f1*wc))^2 - ((f3*foc1 + f2*foc1*hc + f1*foc1*wc)^2 + f1^2*foc1^4 + f2^2*foc1^2*foc2^2)*((f6*foc2 + f5*foc2*hc + f4*foc2*wc)^2 + f5^2*foc2^4 + f4^2*foc1^2*foc2^2))^3 - ((((f6*foc2 + f5*foc2*hc + f4*foc2*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f5*foc2^3*(f8 + f5*hc + f2*wc) + f4*foc1^2*foc2*(f7 + f4*hc + f1*wc))*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(f6*foc2 + f5*foc2*hc + f4*foc2*wc) + f1*f4*foc1^3*foc2 + f2*f5*foc1*foc2^3) + ((f3*foc1 + f2*foc1*hc + f1*foc1*wc)^2 + f1^2*foc1^4 + f2^2*foc1^2*foc2^2)*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f1*foc1^3*(f7 + f4*hc + f1*wc) + f2*foc1*foc2^2*(f8 + f5*hc + f2*wc)))*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f1*foc1^3*(f7 + f4*hc + f1*wc) + f2*foc1*foc2^2*(f8 + f5*hc + f2*wc)) + (((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f1*foc1^3*(f7 + f4*hc + f1*wc) + f2*foc1*foc2^2*(f8 + f5*hc + f2*wc))*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(f6*foc2 + f5*foc2*hc + f4*foc2*wc) + f1*f4*foc1^3*foc2 + f2*f5*foc1*foc2^3) + ((f6*foc2 + f5*foc2*hc + f4*foc2*wc)^2 + f5^2*foc2^4 + f4^2*foc1^2*foc2^2)*((f6*foc2 + f5*foc2*hc + f4*foc2*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f5*foc2^3*(f8 + f5*hc + f2*wc) + f4*foc1^2*foc2*(f7 + f4*hc + f1*wc)))*((f6*foc2 + f5*foc2*hc + f4*foc2*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f5*foc2^3*(f8 + f5*hc + f2*wc) + f4*foc1^2*foc2*(f7 + f4*hc + f1*wc)) - (((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(f6*foc2 + f5*foc2*hc + f4*foc2*wc) + f1*f4*foc1^3*foc2 + f2*f5*foc1*foc2^3)^2 - ((f3*foc1 + f2*foc1*hc + f1*foc1*wc)^2 + f1^2*foc1^4 + f2^2*foc1^2*foc2^2)*((f6*foc2 + f5*foc2*hc + f4*foc2*wc)^2 + f5^2*foc2^4 + f4^2*foc1^2*foc2^2))*((wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1)^2 + foc1^2*(f7 + f4*hc + f1*wc)^2 + foc2^2*(f8 + f5*hc + f2*wc)^2) - (((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f1*foc1^3*(f7 + f4*hc + f1*wc) + f2*foc1*foc2^2*(f8 + f5*hc + f2*wc))^2 + ((f6*foc2 + f5*foc2*hc + f4*foc2*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f5*foc2^3*(f8 + f5*hc + f2*wc) + f4*foc1^2*foc2*(f7 + f4*hc + f1*wc))^2)*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)^2 + (f6*foc2 + f5*foc2*hc + f4*foc2*wc)^2 + f1^2*foc1^4 + f5^2*foc2^4 + f2^2*foc1^2*foc2^2 + f4^2*foc1^2*foc2^2))*(((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(f6*foc2 + f5*foc2*hc + f4*foc2*wc) + f1*f4*foc1^3*foc2 + f2*f5*foc1*foc2^3)^2 - ((wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1)^2 + foc1^2*(f7 + f4*hc + f1*wc)^2 + foc2^2*(f8 + f5*hc + f2*wc)^2)*((f3*foc1 + f2*foc1*hc + f1*foc1*wc)^2 + (f6*foc2 + f5*foc2*hc + f4*foc2*wc)^2 + f1^2*foc1^4 + f5^2*foc2^4 + f2^2*foc1^2*foc2^2 + f4^2*foc1^2*foc2^2) + ((f3*foc1 + f2*foc1*hc + f1*foc1*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f1*foc1^3*(f7 + f4*hc + f1*wc) + f2*foc1*foc2^2*(f8 + f5*hc + f2*wc))^2 + ((f6*foc2 + f5*foc2*hc + f4*foc2*wc)*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1) + f5*foc2^3*(f8 + f5*hc + f2*wc) + f4*foc1^2*foc2*(f7 + f4*hc + f1*wc))^2 - ((f3*foc1 + f2*foc1*hc + f1*foc1*wc)^2 + f1^2*foc1^4 + f2^2*foc1^2*foc2^2)*((f6*foc2 + f5*foc2*hc + f4*foc2*wc)^2 + f5^2*foc2^4 + f4^2*foc1^2*foc2^2))*(18*(f3*foc1 + f2*foc1*hc + f1*foc1*wc)^2 + 18*(f6*foc2 + f5*foc2*hc + f4*foc2*wc)^2 + 18*(wc*(f7 + f4*hc + f1*wc) + f6*hc + f3*wc + hc*(f8 + f5*hc + f2*wc) + 1)^2 + 18*foc1^2*(f7 + f4*hc + f1*wc)^2 + 18*foc2^2*(f8 + f5*hc + f2*wc)^2 + 18*f1^2*foc1^4 + 18*f5^2*foc2^4 + 18*f2^2*foc1^2*foc2^2 + 18*f4^2*foc1^2*foc2^2);